之前在 吸星大法 - IMPORT之 1: 使用extension擴展功能 中,有提到『**可以使用 os.Path套件來處理主機(server)端的路徑、檔案 **』,例如 DISPLAY os.Path.pwd() 可以列印出程式執行當下的路徑。
那,如果整個的過程是『從PC上傳指定檔案,到主機的指定路徑』,那看來現行完成率只有33%
本機的『選檔案、上傳檔案』就要靠其他的套件來執行。
Genero執行時,用戶端也必須有相應的客戶端軟體 (client) 雖然主要工作是產生要操作的畫面,但也可以控制它做點工作。控制的指令即稱為『frontCall前台指令』
所以,只要在前端承接指令的客戶端,就具備了接收服務器要求執行工作的機制。如 Windows/MAC/Linux KDE的 GDC、瀏覽器上的GBC、Android/IOS上的 GMA/GMI 等,都可以執行接收的 frontCALL 指令
因為平台限制的關係,每一種 client 能支持的指令是有差異的。瀏覽器因為管制的最嚴格,因此運作在瀏覽器的 GBC缺少的功能最多。例如『開啟檔案總管、上傳』等,都是受限的。
限制的指令種類必須查表之後才會知道。
FGL列出 frontCall的標準語法
CALL ui.Interface.frontCall( moduleName STRING, functionName STRING,
[ valueList ], [ variableList ] )
範例
main
DEFINE info STRING
CALL ui.Interface.frontCall("standard","getenv", ["OS"], [info] )
DISPLAY info
end main
執行結果:Windows_NT
功能有:開啟PC端檔案總管挑選路徑(openDir)、挑選檔案(openFile)、抓變數(getEnv)、執行shell(execute)、播放聲音檔(playSound)、存檔(saveFile)
功能有:加剪貼簿內容(cbAdd)、抓剪貼簿(cbGet)之類的
功能有:開指定路徑(launchURL)
以上指令可參考 https://4js.com/online_documentation/fjs-fgl-manual-html/#fgl-topics/c_fgl_frontcalls_standard.html
有操作用法,與更詳細的細節
這裡面播放聲音檔(mp3之類的音訊格式) 最為有趣。若希望程式在某些動作出語音的話,還可以搭配 Google TTS python套件,使用 RUN 指令產出對應的語音檔,然後透過 playSound 就可滿足唸出來的需求。( T100用戶可參考 cl_err 中的程式片段)
我們曾經在 https://ithelp.ithome.com.tw/articles/10259336 介紹過 GDC,也討論過GDC的除錯方式。從Genero 1.0版到3.20版本,GDC使用QT工具,進行各種平台的畫面渲染,並協助執行 frontCALL。
但是因應未來軟件服務化、跨平台化,Genero套件從 4.00版本起,不再使用QT進行畫面渲染,採用瀏覽器的渲染引擎來進行客戶端程式的製作。
所以,除了畫面能夠跨平台趨向於一致的體驗,『許多的 frontCALL都會消失禁用』,例如開啟瀏覽器、客戶端檔案操作等都消失。但
CALL ui.Interface.frontCall("standard", "launchURL", [ url ], [] ) #開啟瀏覽網頁 url要記得換
這是唯一確認必要保留的。
到這邊應該就可以聯想到:移動設備上有許多的裝置,如照相機、錄音機、掃條碼、抓GPS、傳簡訊、打電話...這些,就是透過 frontCALL 來驅動的。
移動設備的連結與處理,『後面再專章討論』